본문으로 건너뛰기

Q. 클로저의 예시를 들고 과정을 설명하세요.

🧑🏻‍💻 Answer.


✅ 코드 예시

function outer() {
var outerVar = 10;

function inner() {
console.log(outerVar); // outerVar는 클로저로서 접근 가능
}

return inner;
}

var closureFunc = outer(); // outer 함수 실행 후 inner 함수 반환
closureFunc(); // inner 함수 실행
  1. outer 함수가 호출됩니다. 이때 outerVar 변수가 선언되고 값 10이 할당됩니다.

  2. inner 함수가 outer 함수 내에서 정의됩니다.

    • 이때 inner 함수는 outer 함수의 스코프를 객체의 내부 슬롯[[Enviroment]] 에 저장하여 클로저를 형성합니다. 이를 통해 inner 함수는 outerVar 변수에 접근할 수 있습니다.
  3. inner 함수가 closureFunc 변수에 할당됩니다.

  4. closureFunc 변수에 할당된 inner 함수가 호출됩니다.

    • 이때 inner 함수는 outer 함수의 스코프에 있는 outerVar 변수에 접근하고 값을 출력합니다.
  • 이처럼 클로저는 함수가 호출된 후에도 함수가 선언된 스코프의 변수에 접근할 수 있습니다.